//封装一个Toast 组件 (提供重复利用)--------------------------------

function Toast(msg, type, time1, time2, bottom) {
  var bottom = bottom || 40;
  //msg 提示的内容  ,type 类型风格
  // $(".toast").remove(); //先清掉
  var type = type || "success"; //warning error
  var htmlStr = '<div class="toast  ' + type + '" style=" bottom: ' + bottom + "px" + '">' + msg + "</div>";
  //插入body末尾处
  $(".toast").remove();
  $("body").append(htmlStr);
  setTimeout(function () {
    $(".toast").fadeOut(time2, function () {});
  }, time1);
}

var ajaxUtil = {
  loadShowTime: 1000,
  /**
   * Ajax请求
   * @param {Object} url 请求的url
   * @param {Object} params 参数（json类型，如：{userName:'admin', email:'mao2080@sina.com'}）
   * @param {Object} successCallBack 自定义函数-成功时返回
   * @param {Object} errorCallBack 自定义函数-失败时返回
   * @param {Object} args 其他参数{"loadingId":null}
   */
  ajaxRequest: function (url, params, successCallBack, errorCallBack, args) {
    args = ajaxUtil.showLoading(args, "默认启动等待特效", params);
    $.ajax({
      url: url,
      data: params,
      type: "post",
      dataType: "json",
      async: true,
      success: function (res) {
        if (res.success || res.code == 200) {
          args = ajaxUtil.showLoading(args, "请求成功!", res);
          args.timestamp = new Date().getTime() - args.timestamp;
          args.code = res.code;
          if (args.timestamp || args.timestamp > ajaxUtil.loadShowTime) {
            window.setTimeout(function () {
              ajaxUtil.hideLoading(args); //调用成功方法、
              // args.code=res.code ;
              successCallBack(res);
            }, ajaxUtil.loadShowTime - args.timestamp);
          } else {
            //  args.code = res.code;
            ajaxUtil.hideLoading(args);
            successCallBack(res);
          }
        } else {
          args.code = res.code;
          if (errorCallBack) {
            errorCallBack(res);
            args = ajaxUtil.showLoading(args, "登陆失败!", res); //调用失败方法
          }
          ajaxUtil.hideLoading(args);
        }
      },
      error: function (res) {
        args.code = res.code;
        ajaxUtil.hideLoading(args);
        console.log(res);
        args = ajaxUtil.showLoading(args, "请求失败!", res);
      },
      complete: function () {
        window.setTimeout(function () {
          ajaxUtil.hideLoading2(args);
        }, ajaxUtil.loadShowTime + 500 - args.timestamp);
      },
    });
  },

  //封装一个Toast 组件 (提供重复利用)--------------------------------
  Toast: function (msg, type, time1, time2, bottom) {
    //msg 提示的内容  ,type 类型风格
    // $(".toast").remove();
    var type = type || "success";
    var htmlStr = '<div class="toast ' + type + '" style="z-index:9999;bottom: ' + bottom + 'px">' + msg + "</div>";
    //插入body末尾处
    $("body").append(htmlStr);
    setTimeout(function () {
      $(".toast").fadeOut(time2, function () {});
    }, time1);
  },

  /**
   * 显示加载loading
   * @param {Object} args
   */
  showLoading: function (args, msg, res) {
    args = !args ? {} : args;
    args.res = res;
    args.timestamp = new Date().getTime();
    if (args.loadingId) {
      var container = $(args.loadingId);
      if (container) {
        container.css({
          position: "relative",
        });
        // console.log(res);
        if (msg == "请求失败!" || msg == "登陆失败!" || args.code == 100) {
          Toast(msg, "error", 2000, 1000);
          // container.append('<div class="loading" style="margin-top:30px">' +
          //     333 + msg + "</div>");
          // narn("error", "失败:" + msg, "提示");
        } else if (msg == "请求成功!" || args.code == 200) {
          Toast(msg, "success", 500, 1000);
          // container.append(
          //     '<div class="loadingOK" style="margin-top:30px">' +
          //     "登录成功！" +
          //     "</div>"
          // );
          window.parent.narn("success", res.cname + "登陆成功，欢迎使用!", "提示");
        } else {
          container.append('<div class="loading" style="width:60px; height:24px; position:absolute;left:50%; margin-left:-30px;margin-top:12px;"><img src="img/loading-0.gif"/></div>');
        }
      }
    }
    return args;
  },
  /**
   * 隐藏加载loading
   * @param {Object} args
   */
  hideLoading: function (args) {
    if (args.loadingId) {
      var container = $(args.loadingId);

      if (container) {
        container.find(".loading").remove();
        // container.find(".loadingOK").remove();
      }
    }
  },
  hideLoading2: function (args) {
    if (args.loadingId) {
      var container = $(args.loadingId);

      if (container) {
        // container.find(".loading").remove();
        container.find(".loadingOK").remove();
      }
    }
  },
};

// 最终的接口: API
window.API = {};
var urls = {
  baseUrl: "/", //主路由
  data: ["getLdData", "upProjecData", "getSid", "updateProjecData", "deleteProjectData", "login"],
};

urls.data.forEach(function (item) {
  // console.log("item:", item);
  window.API[item] = urls.baseUrl + item;
});

// //封装一个ajax的请求方法
API.get = function (url, data, callback) {
  $.ajax({
    method: "get",
    url: API[url],
    data: data,
    dataType: "jsonp",
    success: callback,
    // traditional: true,
    error: function (err) {
      //请求失败后调用的函数
      console.log("ajax处理失败！", err);
      Toast(err, "error", 2000, 800);
    },
  });
};

API.post = function (url, data, callback) {
  $.ajax({
    method: "post",
    url: API[url],
    data: data,
    success: callback,
    traditional: true,
    error: function (err) {
      //请求失败后调用的函数
      console.log("ajax处理失败！", err);
      Toast(err, "error", 2000, 800);
    },
  });
};

API.jsonp = function (url, data, callback) {
  $.ajax({
    method: "get",
    url: API[url],
    data: data,
    dataType: "jsonp",
    jsonpCallback: "myJsonp", //设定返回的回调函数

    success: callback,
    // traditional: true,
    error: function (err) {
      //请求失败后调用的函数
      console.log("ajax处理失败！", err);
      Toast(err, "error", 2000, 800);
    },
  });
};

document.ontouchmove = function (e) {
  e.preventDefault();
}; //文档禁止 touchmove事件

//封装一个处理表单序列化数据格式
function formatData(array) {
  var data = {};

  //处理需要提交的数据
  $.each(array, function (index, item) {
    data[item.name] = item.value;
  });
  return data;
}
